A legacy system may be any existing system including hardware components and software components that together perform a process or processes. Over time the hardware components of a legacy system become obsolete and may no longer be supported as by way of maintenance contracts. Compounding the issue of obsolete hardware components is the issue of undocumented or poorly documented software components, preventing the software components of a legacy system from being adapted to new hardware components without extensive reverse engineering of the software code. Additionally or alternatively, some or all of the software components may be written so as to run only on specific hardware components such as specific computer processors, servers, and database stores, in which case the software components cannot be ported to new hardware components.
Further, when legacy system processes are undocumented or poorly documented, it may not be possible to create new software components to accomplish the legacy system processes, as there may be no clear understanding of the full extent of what the legacy system processes are intended to accomplish.
The combination of hardware component obsolescence and lack of software component documentation and/or process documentation can leave a legacy system vulnerable to system failure without the possibility of meaningful remedial action.
An additional concern is that no reasonable options may be available to augment or duplicate a legacy system for expanded process capability because of hardware component obsolescence and/or software component lack of adaptability.
There exists, therefore, a need to be able to first learn the behavior of a legacy system, and then to create a new system that mimics the behavior of the legacy system, using modern hardware components and at least partially new software components.